public class SquareOfOrderedArray {
/*
     有序数组的平方
     给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。

     考虑这个问题，原数组有序，负数平方后可能比正数平方大，而题目要求新的数组也是非递减顺序。返回的结果中，数组末尾一定是最大的，
     而这个最大，要么来自原数组的最大，要么来自原数组的最小，以此类推。我们采用双指针，一个指向原数组头，一个指向尾。比较两个指向
     的平方，即可填入新数组末尾。
     然后移动指针，继续比较，直到新数组被填满。
*/

    public static void main(String[] args) {

    }

    // 用双指针
    public int[] mySolution(int[] nums){
        int[] n = new int[nums.length];
        int left = 0, right = nums.length-1;
        for(int i = right; i >= 0; i--){
            int l = nums[left] * nums[left];
            int r = nums[right] * nums[right];
            if(r >= l){
                n[i] = r;
                right--;
            }else{
                n[i] = l;
                left++;
            }
        }
        return n;
    }


}
